Computers are becoming destinations for an increasing number of information types. Text and graphics, audio and video, broadcast and interactive: people are using computers to communicate an increasing volume of information. In addition, there is an increasing variety of communication paths. Each technological advance and trend adds new communication paths but adoption is typically not uniform and older communication paths can remain in service, and even popular, for years.
Wired and wireless, fast and slow, planned and ad hoc: the variety of communication paths can be a challenge for communication application designers. In particular, it has become common for computers to communicate over large heterogeneous networks such as the Internet. Application designs targeted to low end communication paths may seem drab next to application designs targeted to high end communication paths but application designs targeted to high end communication paths may be of limited use to significant segments of an application's potential user population.
Communication path bandwidth may be one differentiator between high end and low end communication paths. In addition, communication paths typically have some level of unreliability, that is, data may be lost or corrupted between sender and receiver. Some conventional data encoding techniques help protect against data loss and may have other desirable characteristics but lack sufficient sensitivity with respect to, for example, bandwidth heterogeneity. Some conventional data encoding techniques enable adaptation to a spectrum of communication path bandwidths but perform poorly over unreliable communication paths or are inflexible with respect to data loss or corruption.